package prh25.biblioteca.entity.dao.hibernate;

import java.sql.Date;
import java.util.List;

import org.hibernate.criterion.Restrictions;

import prh25.biblioteca.entity.UsuarioExterno;
import prh25.biblioteca.entity.dao.UsuarioExternoDAO;

/**
 * <p>Hibernate DAO layer for UsuarioExternos</p>
 * <p></p>
 *
 * @author Wilson
 * @see http://code.google.com/p/prh-doc/
 */
public class UsuarioExternoHibernateDAO extends
		AbstractHibernateDAO<UsuarioExterno, Integer> implements
		UsuarioExternoDAO {

	/**
	 * Find UsuarioExterno by id
	 */
	@SuppressWarnings("unchecked")
	public List<UsuarioExterno> findById(Integer id) {
		return findByCriteria(Restrictions.eq("usuario.id", id));
	}
	
	/**
	 * Find UsuarioExterno by nome
	 */
	public List<UsuarioExterno> findByNome(String nome) {
		return findByCriteria(Restrictions.eq("nome", nome));
	}
	
	/**
	 * Find UsuarioExterno by email
	 */
	public List<UsuarioExterno> findByEmail(String email) {
		return findByCriteria(Restrictions.eq("email", email));
	}
	
	/**
	 * Find UsuarioExterno by tipo
	 */
	public List<UsuarioExterno> findByTipo(String tipo) {
		return findByCriteria(Restrictions.eq("tipo", tipo));
	}
	
	/**
	 * Find UsuarioExterno by enderecoId
	 */
	@SuppressWarnings("unchecked")
	public List<UsuarioExterno> findByEnderecoId(Integer enderecoId) {
		return findByCriteria(Restrictions.eq("endereco.id", enderecoId));
	}

	@Override
	public List<UsuarioExterno> findByDataNascimento(Date dataNascimento) {
		return findByCriteria(Restrictions.eq("dataNascimento", dataNascimento));
	}
	

}
